﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using Controllerss;
using Core.Contract.DataContract;
using www.Controllers;
//using www.SService;

namespace www.Admin
{
    public partial class LoginAdmin : System.Web.UI.Page
    {

        #region Value
        private readonly ObjectCache _cache = MemoryCache.Default;
        //private readonly HyServicesClient _service1 = new HyServicesClient();
        private readonly LoginController _loginController=new LoginController();
        private readonly Utility _utility = new Utility();
        #endregion
        #region Contructor
        protected void Page_Load(object sender, EventArgs e)
        {
            LoadData();
        }
        #endregion
        #region Event
        protected void Logon(object sender, EventArgs e)
        {
            try
            {
                if (CheckExists())
                {
                    Response.Redirect("Default.aspx");
                }
                else
                {
                    Message("Tên đăng nhập hoặc mật khẩu không chính xác.");
                }
            }
            catch (Exception)
            {

            }
        }
        #endregion
        #region Business

        protected void LoadData()
        {
            if (_cache["Staff"] == null)
            {
                var lData = _loginController.GetAllUser();
                if (lData.Any())
                {
                    var policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddHours(27) };
                    _cache.Set("Staff", lData.ToList(), policy);
                }
            }
        }

        private Boolean CheckExists()
        {
            if (string.IsNullOrEmpty(txtUsername.Value))
            {
                Message("Bạn phải nhập vào tên đăng nhập.");
                return false;
            }
            if (string.IsNullOrEmpty(txtPassword.Value))
            {
                Message("Bạn phải nhập vào tên mật khẩu.");
                return false;
            }
            var lData = (List<RelaxLoginsDataContract>)_cache["Staff"];
            if (lData == null)
                return false;
            var first = lData.FirstOrDefault(p => p.UserName == txtUsername.Value && p.Active == Constant.Active.Display);
            if (first == null)
            {
                Message("Tài khoản không tồn tại.");
                return false;
            }
            var pass = _utility.Decrypt("Dragon_hy", first.Password);
            if (pass == txtPassword.Value)
            {
                Session["AdminSuccess"] = true;
                Session["AdminUser"] = first.UserName;
                Session["StaffId"] = first.Id;
                Session["role"] = first.Role;
                return true;
            }
            return false;
        }

        private void Message(string msg)
        {
            Response.Write("<script>alert('" + msg + "');</script>");
        }
        #endregion
    }
}